\chapter{Ocena rozwiązania}
\label{chap:etap3-testy}


Zaprojektowane i zaimplementowane rozwiązanie spełniło zakładaną dla niego rolę. Umożliwia ono wykonanie, w~czasie szybszym niż dla relacyjnych baz danych zapytań, których natura sama z~siebie sugeruje wykorzystanie podejścia grafowego. Wykorzystanie gotowej implementacji: Neo4J umożliwiło proste wyszukiwanie połączeń, nawet z dużą liczbą przesiadek. 

\subsection{Testy wydajnościowe}
Z uwagi iż jednym z założeń aplikacji było wytrzymanie dużego obiążenia przeprowadzono specjalne testy wydajnościowe.

Testy przeprowadzono przy użyciu dwóch komputerów. Serwerem był laptop z procesorem Core2Duo T5270 i 2GB RAM, na którym uruchomio serwer Apache Tomcat 7.0.27. Konfiguracja serwera pozostała domyślna. Ruch generował komputer HP MicroServer. Do generowania ruchu użyto Apache JMeter.

Test składał się z 4 części, w każdej przeprowadzono 4000 zapytań. 

\begin{figure}
	\includegraphics{figures/GraphResults-50.png}
	\caption{Wyniki dla 50 równoczesnych połączeń}
	\label{fig:graph50}
\end{figure}
\begin{figure}
	\includegraphics{figures/GraphResults-100.png}
	\caption{Wyniki dla 100 równoczesnych połączeń}
	\label{fig:graph100}
\end{figure}
\begin{figure}
	\includegraphics{figures/GraphResults-200.png}
	\caption{Wyniki dla 200 równoczesnych połączeń}
	\label{fig:graph200}
\end{figure}
\begin{figure}
	\includegraphics{figures/GraphResults-500.png}
	\caption{Wyniki dla 500 równoczesnych połączeń}
	\label{fig:graph500}
\end{figure}
We wszystkich próbach przepustowość wyniosła od 2000 do 2500 odpowiedzi na minutę. Jest to za mała ilość na planowane obciążenie. Dodatkowo czas odpowiedzi przy 500 użytkownikach wyniósł średnio 17s, to dużo, jednak tego typu czasy są akceptowalne w systemach wyszukiwania połączeń.

By ustalić przyczynę tak stosunkowo niskiej wydajności przystąpiono do profilowania. Najdłuzej wykonującą się funkcją jest sam algorytm szukania, jednak jego czas wykonania wynosił około 30ms, to koresponduje z obsługiwanymi 30-40 zapytaniami na sekundę.

Poprawy wydajności należy szukać przedewszystkim w wykorzystaniu lepszego sprzętu, wykorzystany komputer posiadał tylko dwa rdzenie procesora. Kolejną rzeczą powinno być dokładne skonfigurowanie serwera Tomcat. Dodatkowo można spróbować udoskonalić metody przeszukiwania w algorytmie wyszukiwania ścieżki.
